package v1

import (
	"github.com/gogf/gf/v2/frame/g"
	"github.com/google/uuid"
	"github.com/gogf/gf-demo-user/v2/internal/model/entity"
)
type UserReq struct {
	g.Meta   `path:"/user/{User_id}" method:"get" tags:"UserService" summary:"检索特定用户的信息"`
	User_id uuid.UUID `v:"required" in:"path"`
}
type UserPostReq struct {
	g.Meta   `path:"/user" method:"post" tags:"UserService" summary:"创建用户相关数据"`
	Name string      `v:"required"`
	Description string  `v:"required"`
	Industry string     `v:"required"`
	Tag string      `v:"required"`
	Address string  `v:"required"`
	Website string  `v:"required"`
	City string     `v:"required"`
	Size string     `v:"required"`
	Contact string  `v:"required"`
	Logo string     `v:"required"`
}
type UserUpReq struct {
	g.Meta   `path:"/user" method:"patch" tags:"UserService" summary:"更新特定用户的信息"`
	User_id       uuid.UUID       `v:"required"`
	Name string      `v:"required"`
	Description string  `v:"required"`
	Industry string     `v:"required"`
	Tag string      `v:"required"`
	Address string  `v:"required"`
	Website string  `v:"required"`
	City string     `v:"required"`
	Size string     `v:"required"`
	Contact string  `v:"required"`
	Logo string     `v:"required"`
}
type UserMeReq struct {
	g.Meta   `path:"/user/me" method:"get" tags:"UserService" summary:"检索认证用户用户的信息"`
}

type UserMeUpReq struct {
	g.Meta   `path:"/user/me" method:"patch" tags:"UserService" summary:"更新认证用户用户的信息"`
	Name string      `v:"required"`
	Description string  `v:"required"`
	Industry string     `v:"required"`
	Tag string      `v:"required"`
	Address string  `v:"required"`
	Website string  `v:"required"`
	City string     `v:"required"`
	Size string     `v:"required"`
	Contact string  `v:"required"`
	Logo string     `v:"required"`
}
type UserMeDeleReq struct {
	g.Meta   `path:"/user/me" method:"delete" tags:"UserService" summary:"删除用户账号"`
}
type UserSubscriptionReq struct {
	g.Meta   `path:"/user/subscription/me" method:"get" tags:"UserService" summary:"检索认证用户的付费订阅详情"`
}
type UserSubscriptionPostReq struct {
	g.Meta   `path:"/user/subscription" method:"post" tags:"UserService" summary:"添加用户付费订阅"`
	User_plan  string      `v:"required"`
	Status string      `v:"required"`
	Expiry string      `v:"required"`
}
type UserSubscriptionUpReq struct {
	g.Meta   `path:"/user/subscription" method:"patch" tags:"UserService" summary:"更新特定的用户付费订阅"`
	User_plan  string      `v:"required"`
	Status string      `v:"required"`
	Expiry string      `v:"required"`
}
type UserResumeReq struct {
	g.Meta   `path:"/user/resume" method:"get" tags:"UserService" summary:"检索认证用户的简历"`
	Resume_id uint      `v:"required"`
}
type UserResumePostReq struct {
	g.Meta   `path:"/user/resume" method:"post" tags:"UserService" summary:"添加用户简历"`
	Media  string      `v:"required"`
	Expiry string      `v:"required"`
}
type UserResumeUpReq struct {
	g.Meta   `path:"/user/resume" method:"patch" tags:"UserService" summary:"更新特定的简历"`
	Media  string      `v:"required"`
	Expiry string      `v:"required"`
}
type UserResumeDeleReq struct {
	g.Meta   `path:"/user/resume" method:"delete" tags:"UserService" summary:"删除特定的简历"`
	Resume_id uint      `v:"required"`
}

type UserFirstcertReq struct {
	g.Meta   `path:"/user/firstcer" method:"post" tags:"UserService" summary:"检索认证用户的Firstcert证书"`
}
type UserFirstcertUpReq struct {
	g.Meta   `path:"/user/firstcer" method:"patch" tags:"UserService" summary:"添加认证用户的Firstcert证书"`
	Media  string      `v:"required"`
	Expiry string      `v:"required"`
}

type UserPicturePostReq struct {
	g.Meta   `path:"/user/profile_picture" method:"post" tags:"UserService" summary:"添加用户的头像"`
	Media  string      `v:"required"`
	Expiry string      `v:"required"`
}
type UserPictureUpReq struct {
	g.Meta   `path:"/user/profile_picture" method:"patch" tags:"UserService" summary:"更新用户的头像"`
	Media  string      `v:"required"`
	Expiry string      `v:"required"`
}
type UserPictureDeleReq struct {
	g.Meta   `path:"/user/profile_picture" method:"delete" tags:"UserService" summary:"删除用户的头像"`
	Resume_id uint      `v:"required"`
}
type UserResumesReq struct {
	g.Meta   `path:"/user/resumes" method:"get" tags:"UserService" summary:"检索认证用户的简历"`
}
type UserSkillPostReq struct {
	g.Meta   `path:"/user/skill" method:"post" tags:"UserService" summary:"添加用户技能"`
	Name  string      `v:"required"`
}
type UserSkillReq struct {
	g.Meta   `path:"/user/skill" method:"get" tags:"UserService" summary:"检索认证用户的技能"`
	Skill_id uint      `v:"required"`
}
type UserSkillUpReq struct {
	g.Meta   `path:"/user/skill" method:"patch" tags:"UserService" summary:"更新特定的技能"`
	Name  string      `v:"required"`
	Skill_id uint      `v:"required"`
}
type UserSkillDeleReq struct {
	g.Meta   `path:"/user/skill" method:"delete" tags:"UserService" summary:"删除特定的技能"`
	Skill_id uint      `v:"required"`
}

type UserSkillRes struct{
	*entity.Skill
}

type UserSkillUpRes struct{
}

type UserExperiencePostReq struct {
	g.Meta   `path:"/User/Experience/{User_id}" method:"post" tags:"UserService" summary:"添加用户教育记录"`
	User_id uuid.UUID      `json:"user_id" in:"path" description:"name"`
	Start_date string      `json:"start_date" description:"name"`
	End_date string      `json:"end_date" description:"name"`
	IsPresent string      `json:"isPresent" description:"name"`
	Description string      `json:"description" description:"name"`
	Title string      `json:"title" description:"name"`
	Company string      `json:"company" description:"name"`
	Company_string string      `json:"company_string" description:"name"`
}
type UserExperienceReq struct {
	g.Meta   `path:"/User/Experience" method:"get" tags:"UserService" summary:"检索认证用户的教育记录"`
	Experience_id uint      `v:"required"`
}
type UserExperienceUpReq struct {
	g.Meta   `path:"/User/Experience" method:"patch" tags:"UserService" summary:"更新特定的教育记录"`
	Experience_id uint      `v:"required"`
	User_id uuid.UUID      `json:"user_id" in:"path" description:"name"`
	Start_date string      `json:"start_date" description:"name"`
	End_date string      `json:"end_date" description:"name"`
	IsPresent string      `json:"isPresent" description:"name"`
	Description string      `json:"description" description:"name"`
	Title string      `json:"title" description:"name"`
	Company string      `json:"company" description:"name"`
	Company_string string      `json:"company_string" description:"name"`
}
type UserExperienceDeleReq struct {
	g.Meta   `path:"/User/Experience" method:"delete" tags:"UserService" summary:"删除特定的教育记录"`
	Experience_id uint      `v:"required"`
}

type UserExperienceRes struct{
	*entity.Experience
}

type UserExperienceUpRes struct{
}


type UserEducationPostReq struct {
	g.Meta   `path:"/user/education" method:"post" tags:"UserService" summary:"添加用户教育记录"`
	Start_date string     `v:"required"`
	End_date string      `v:"required"`
	Institute string      `v:"required"`
	Institute_string string    `v:"required"`
	Level string     `v:"required"`
	Programme string    `v:"required"`
	Description string   `v:"required"`
}
type UserEducationReq struct {
	g.Meta   `path:"/user/education" method:"get" tags:"UserService" summary:"检索特定的教育记录"`
	Education_id uint      `v:"required"`
}
type UserEducationUpReq struct {
	g.Meta   `path:"/user/education" method:"patch" tags:"UserService" summary:"更新特定的教育记录"`
	Education_id uint      `v:"required"`
	Start_date string     `v:"required"`
	End_date string      `v:"required"`
	Institute string      `v:"required"`
	Institute_string string    `v:"required"`
	Level string     `v:"required"`
	Programme string    `v:"required"`
	Description string   `v:"required"`
}
type UserEducationDeleReq struct {
	g.Meta   `path:"/user/education" method:"delete" tags:"UserService" summary:"删除特定的教育记录"`
	Education_id uint      `v:"required"`
}

type UserRes struct{
	*entity.User
}

type UserResumeRes struct{
	*entity.Resume
}

type UserMeRes struct{
	*entity.User
}

type UserEducationRes struct{
	*entity.Education
}

type UserEducationUpRes struct{
}

type UserSubscriptionRes struct{
	*entity.Subscription
}

type UserResumeUpRes struct{
}

type UserMeDeleRes struct{
}

type UserSubscriptionUpRes struct{
}

type UserUpRes struct{
}

type UserPostRes struct{
}

type ListReq struct {
	g.Meta `path:"/user/list" method:"get" tags:"UserService" summary:"获取用户列表"`
}
type ListRes struct {
	Users []*entity.User
}

